'Weak Dependency Graph [60.0]'
------------------------------
Answer:           YES(?,O(n^1))
Input Problem:    innermost runtime-complexity with respect to
  Rules:
    {  flatten(nil()) -> nil()
     , flatten(unit(x)) -> flatten(x)
     , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
     , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
     , flatten(flatten(x)) -> flatten(x)
     , rev(nil()) -> nil()
     , rev(unit(x)) -> unit(x)
     , rev(++(x, y)) -> ++(rev(y), rev(x))
     , rev(rev(x)) -> x
     , ++(x, nil()) -> x
     , ++(nil(), y) -> y
     , ++(++(x, y), z) -> ++(x, ++(y, z))}

Details:         
  We have computed the following set of weak (innermost) dependency pairs:
   {  flatten^#(nil()) -> c_0()
    , flatten^#(unit(x)) -> c_1(flatten^#(x))
    , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
    , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
    , flatten^#(flatten(x)) -> c_4(flatten^#(x))
    , rev^#(nil()) -> c_5()
    , rev^#(unit(x)) -> c_6()
    , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
    , rev^#(rev(x)) -> c_8()
    , ++^#(x, nil()) -> c_9()
    , ++^#(nil(), y) -> c_10()
    , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
  
  The usable rules are:
   {  flatten(nil()) -> nil()
    , flatten(unit(x)) -> flatten(x)
    , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
    , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
    , flatten(flatten(x)) -> flatten(x)
    , rev(nil()) -> nil()
    , rev(unit(x)) -> unit(x)
    , rev(++(x, y)) -> ++(rev(y), rev(x))
    , rev(rev(x)) -> x
    , ++(x, nil()) -> x
    , ++(nil(), y) -> y
    , ++(++(x, y), z) -> ++(x, ++(y, z))}
  
  The estimated dependency graph contains the following edges:
   {flatten^#(unit(x)) -> c_1(flatten^#(x))}
     ==> {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
   {flatten^#(unit(x)) -> c_1(flatten^#(x))}
     ==> {flatten^#(++(unit(x), y)) ->
          c_3(++^#(flatten(x), flatten(y)))}
   {flatten^#(unit(x)) -> c_1(flatten^#(x))}
     ==> {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
   {flatten^#(unit(x)) -> c_1(flatten^#(x))}
     ==> {flatten^#(unit(x)) -> c_1(flatten^#(x))}
   {flatten^#(unit(x)) -> c_1(flatten^#(x))}
     ==> {flatten^#(nil()) -> c_0()}
   {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
     ==> {++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
   {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
     ==> {++^#(nil(), y) -> c_10()}
   {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
     ==> {++^#(x, nil()) -> c_9()}
   {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
     ==> {++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
   {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
     ==> {++^#(nil(), y) -> c_10()}
   {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
     ==> {++^#(x, nil()) -> c_9()}
   {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
     ==> {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
   {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
     ==> {flatten^#(++(unit(x), y)) ->
          c_3(++^#(flatten(x), flatten(y)))}
   {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
     ==> {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
   {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
     ==> {flatten^#(unit(x)) -> c_1(flatten^#(x))}
   {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
     ==> {flatten^#(nil()) -> c_0()}
   {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
     ==> {++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
   {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
     ==> {++^#(nil(), y) -> c_10()}
   {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
     ==> {++^#(x, nil()) -> c_9()}
   {++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
     ==> {++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
   {++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
     ==> {++^#(nil(), y) -> c_10()}
   {++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
     ==> {++^#(x, nil()) -> c_9()}
  
  We consider the following path(s):
   1) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
       , ++^#(x, nil()) -> c_9()}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(x, nil()) -> c_9()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {++^#(x, nil()) -> c_9()}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {++^#(x, nil()) -> c_9()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [8]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  ++^#(x, nil()) -> c_9()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [1]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , ++^#(x, nil()) -> c_9()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [2]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [4]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , ++^#(x, nil()) -> c_9()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [8]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [1] x1 + [1] x2 + [8]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [6]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , ++^#(x, nil()) -> c_9()
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , ++^#(x, nil()) -> c_9()
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , c_9_0() -> 10}
      
   2) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
       , ++^#(nil(), y) -> c_10()}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(nil(), y) -> c_10()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {++^#(nil(), y) -> c_10()}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {++^#(nil(), y) -> c_10()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [8]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  ++^#(nil(), y) -> c_10()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [1]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , ++^#(nil(), y) -> c_10()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [2]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [4]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , ++^#(nil(), y) -> c_10()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [8]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [1] x1 + [1] x2 + [8]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [6]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , ++^#(nil(), y) -> c_10()
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , ++^#(nil(), y) -> c_10()
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , c_10_0() -> 10}
      
   3) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
       , ++^#(x, nil()) -> c_9()}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
               , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(x, nil()) -> c_9()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++^#(x, nil()) -> c_9()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
               , ++^#(x, nil()) -> c_9()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [10]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [1]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [5]
                  c_3(x1) = [1] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++^#(x, nil()) -> c_9()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++^#(x, nil()) -> c_9()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [8]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [8]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++^#(x, nil()) -> c_9()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [0]
                  nil() = [1]
                  unit(x1) = [1] x1 + [14]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [8]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [15]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [2]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                 , ++^#(x, nil()) -> c_9()}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                   , ++^#(x, nil()) -> c_9()}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , c_9_0() -> 10}
      
   4) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
       , ++^#(x, nil()) -> c_9()}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(x, nil()) -> c_9()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {++^#(x, nil()) -> c_9()}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {++^#(x, nil()) -> c_9()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  ++^#(x, nil()) -> c_9()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [1]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , ++^#(x, nil()) -> c_9()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [13]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [2]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , ++^#(x, nil()) -> c_9()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [8]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [1] x1 + [1] x2 + [10]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , ++^#(x, nil()) -> c_9()
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , ++^#(x, nil()) -> c_9()
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , c_9_0() -> 10}
      
   5) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
       , ++^#(nil(), y) -> c_10()}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
               , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(nil(), y) -> c_10()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++^#(nil(), y) -> c_10()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
               , ++^#(nil(), y) -> c_10()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [10]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [1]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [5]
                  c_3(x1) = [1] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++^#(nil(), y) -> c_10()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++^#(nil(), y) -> c_10()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [8]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [8]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++^#(nil(), y) -> c_10()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [0]
                  nil() = [1]
                  unit(x1) = [1] x1 + [14]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [8]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [15]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [2]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                 , ++^#(nil(), y) -> c_10()}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                   , ++^#(nil(), y) -> c_10()}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , c_10_0() -> 10}
      
   6) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
       , ++^#(x, nil()) -> c_9()}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
               , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(x, nil()) -> c_9()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , ++^#(x, nil()) -> c_9()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(x, nil()) -> c_9()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , ++^#(x, nil()) -> c_9()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , ++^#(x, nil()) -> c_9()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [4]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [8]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [1]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , ++^#(x, nil()) -> c_9()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [1] x1 + [1] x2 + [7]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [1]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [7]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))
                 , ++^#(x, nil()) -> c_9()}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))
                   , ++^#(x, nil()) -> c_9()}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 2
                 , flatten^#_0(2) -> 1
                 , c_1_0(1) -> 1
                 , ++^#_0(2, 2) -> 1
                 , c_9_0() -> 1}
      
   7) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
       , ++^#(nil(), y) -> c_10()}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
               , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(nil(), y) -> c_10()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , ++^#(nil(), y) -> c_10()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(nil(), y) -> c_10()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , ++^#(nil(), y) -> c_10()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , ++^#(nil(), y) -> c_10()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [4]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [8]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [1]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))
             , ++^#(nil(), y) -> c_10()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [1] x1 + [1] x2 + [7]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [1]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [7]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))
                 , ++^#(nil(), y) -> c_10()}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))
                   , ++^#(nil(), y) -> c_10()}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , c_10_0() -> 10}
      
   8) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
       , ++^#(nil(), y) -> c_10()}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(nil(), y) -> c_10()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {++^#(nil(), y) -> c_10()}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {++^#(nil(), y) -> c_10()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  ++^#(nil(), y) -> c_10()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [1]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , ++^#(nil(), y) -> c_10()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [13]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [2]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , ++^#(nil(), y) -> c_10()
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [8]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [1] x1 + [1] x2 + [10]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , ++^#(nil(), y) -> c_10()
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , ++^#(nil(), y) -> c_10()
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , c_10_0() -> 10}
      
   9) {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [1]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [1]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [1] x1 + [14]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [3]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [1]
                  unit(x1) = [1] x1 + [12]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [6]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10}
      
   10)
      {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [2]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [9]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [3]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [1]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [1]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [2]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [4]
                  unit(x1) = [1] x1 + [14]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [4]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [9]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [3]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10}
      
   11)
      {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [7]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [4]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [8]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [1]
                  c_2(x1) = [1] x1 + [1]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [8]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [1] x1 + [1] x2 + [8]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [8]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [1]
                  c_2(x1) = [1] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [2]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , flatten^#(++(x, y)) -> c_2(++^#(flatten(x), flatten(y)))
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10}
      
   12)
      {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
      
      The usable rules for this path are the following:
      {  flatten(nil()) -> nil()
       , flatten(unit(x)) -> flatten(x)
       , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
       , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
       , flatten(flatten(x)) -> flatten(x)
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  flatten(nil()) -> nil()
               , flatten(unit(x)) -> flatten(x)
               , flatten(++(x, y)) -> ++(flatten(x), flatten(y))
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , flatten(flatten(x)) -> flatten(x)
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))
               , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(nil()) -> nil()
               , flatten(flatten(x)) -> flatten(x)
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
            and weakly orienting the rules
            {  flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [9]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  flatten(unit(x)) -> flatten(x)
             , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
             , ++(x, nil()) -> x
             , ++(nil(), y) -> y
             , flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {  flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
             , flatten(nil()) -> nil()
             , flatten(flatten(x)) -> flatten(x)
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  flatten(unit(x)) -> flatten(x)
               , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [1]
                  nil() = [0]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [1] x1 + [1] x2 + [8]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [1] x1 + [1]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  flatten(unit(x)) -> flatten(x)
                 , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                 , ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                 , flatten(nil()) -> nil()
                 , flatten(flatten(x)) -> flatten(x)
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  flatten(++(x, y)) -> ++(flatten(x), flatten(y))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  flatten(unit(x)) -> flatten(x)
                   , flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
                   , ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , flatten^#(unit(x)) -> c_1(flatten^#(x))
                   , flatten^#(++(unit(x), y)) -> c_3(++^#(flatten(x), flatten(y)))
                   , flatten(nil()) -> nil()
                   , flatten(flatten(x)) -> flatten(x)
                   , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , flatten^#_0(2) -> 6
                 , flatten^#_0(3) -> 6
                 , c_1_0(6) -> 6
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10}
      
   13)
      {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
       , ++^#(nil(), y) -> c_10()}
      
      The usable rules for this path are the following:
      {  rev(nil()) -> nil()
       , rev(unit(x)) -> unit(x)
       , rev(++(x, y)) -> ++(rev(y), rev(x))
       , rev(rev(x)) -> x
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(++(x, y)) -> ++(rev(y), rev(x))
               , rev(rev(x)) -> x
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
               , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
               , ++^#(nil(), y) -> c_10()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x
             , ++^#(nil(), y) -> c_10()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(rev(x)) -> x
               , ++^#(nil(), y) -> c_10()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
            and weakly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x
             , ++^#(nil(), y) -> c_10()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [5]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
             , rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x
             , ++^#(nil(), y) -> c_10()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [1]
                  unit(x1) = [1] x1 + [4]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [1]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [2]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  rev(++(x, y)) -> ++(rev(y), rev(x))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                 , rev(nil()) -> nil()
                 , rev(unit(x)) -> unit(x)
                 , rev(rev(x)) -> x
                 , ++^#(nil(), y) -> c_10()}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  rev(++(x, y)) -> ++(rev(y), rev(x))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                   , rev(nil()) -> nil()
                   , rev(unit(x)) -> unit(x)
                   , rev(rev(x)) -> x
                   , ++^#(nil(), y) -> c_10()}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , rev^#_0(2) -> 13
                 , rev^#_0(3) -> 13
                 , c_10_0() -> 10}
      
   14)
      {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
       , ++^#(x, nil()) -> c_9()}
      
      The usable rules for this path are the following:
      {  rev(nil()) -> nil()
       , rev(unit(x)) -> unit(x)
       , rev(++(x, y)) -> ++(rev(y), rev(x))
       , rev(rev(x)) -> x
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(++(x, y)) -> ++(rev(y), rev(x))
               , rev(rev(x)) -> x
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
               , ++^#(x, nil()) -> c_9()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(rev(x)) -> x}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [1]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {++^#(x, nil()) -> c_9()}
            and weakly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {++^#(x, nil()) -> c_9()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [4]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [3]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
            and weakly orienting the rules
            {  ++^#(x, nil()) -> c_9()
             , rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
             , ++^#(x, nil()) -> c_9()
             , rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [4]
                  unit(x1) = [1] x1 + [3]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [2]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  rev(++(x, y)) -> ++(rev(y), rev(x))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                 , ++^#(x, nil()) -> c_9()
                 , rev(nil()) -> nil()
                 , rev(unit(x)) -> unit(x)
                 , rev(rev(x)) -> x}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  rev(++(x, y)) -> ++(rev(y), rev(x))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                   , ++^#(x, nil()) -> c_9()
                   , rev(nil()) -> nil()
                   , rev(unit(x)) -> unit(x)
                   , rev(rev(x)) -> x}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , rev^#_0(2) -> 13
                 , rev^#_0(3) -> 13
                 , c_9_0() -> 10}
      
   15)
      {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
       , ++^#(nil(), y) -> c_10()}
      
      The usable rules for this path are the following:
      {  rev(nil()) -> nil()
       , rev(unit(x)) -> unit(x)
       , rev(++(x, y)) -> ++(rev(y), rev(x))
       , rev(rev(x)) -> x
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(++(x, y)) -> ++(rev(y), rev(x))
               , rev(rev(x)) -> x
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
               , ++^#(nil(), y) -> c_10()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(rev(x)) -> x}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [1]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {++^#(nil(), y) -> c_10()}
            and weakly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {++^#(nil(), y) -> c_10()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [4]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [3]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
            and weakly orienting the rules
            {  ++^#(nil(), y) -> c_10()
             , rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
             , ++^#(nil(), y) -> c_10()
             , rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [4]
                  unit(x1) = [1] x1 + [3]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [2]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  rev(++(x, y)) -> ++(rev(y), rev(x))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                 , ++^#(nil(), y) -> c_10()
                 , rev(nil()) -> nil()
                 , rev(unit(x)) -> unit(x)
                 , rev(rev(x)) -> x}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  rev(++(x, y)) -> ++(rev(y), rev(x))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                   , ++^#(nil(), y) -> c_10()
                   , rev(nil()) -> nil()
                   , rev(unit(x)) -> unit(x)
                   , rev(rev(x)) -> x}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , rev^#_0(2) -> 13
                 , rev^#_0(3) -> 13
                 , c_10_0() -> 10}
      
   16)
      {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
       , ++^#(x, nil()) -> c_9()}
      
      The usable rules for this path are the following:
      {  rev(nil()) -> nil()
       , rev(unit(x)) -> unit(x)
       , rev(++(x, y)) -> ++(rev(y), rev(x))
       , rev(rev(x)) -> x
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(++(x, y)) -> ++(rev(y), rev(x))
               , rev(rev(x)) -> x
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))
               , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
               , ++^#(x, nil()) -> c_9()}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x
             , ++^#(x, nil()) -> c_9()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(rev(x)) -> x
               , ++^#(x, nil()) -> c_9()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
            and weakly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x
             , ++^#(x, nil()) -> c_9()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [5]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
             , rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x
             , ++^#(x, nil()) -> c_9()}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [1]
                  unit(x1) = [1] x1 + [4]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [1]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [2]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  rev(++(x, y)) -> ++(rev(y), rev(x))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                 , rev(nil()) -> nil()
                 , rev(unit(x)) -> unit(x)
                 , rev(rev(x)) -> x
                 , ++^#(x, nil()) -> c_9()}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  rev(++(x, y)) -> ++(rev(y), rev(x))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                   , rev(nil()) -> nil()
                   , rev(unit(x)) -> unit(x)
                   , rev(rev(x)) -> x
                   , ++^#(x, nil()) -> c_9()}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , rev^#_0(2) -> 13
                 , rev^#_0(3) -> 13
                 , c_9_0() -> 10}
      
   17)
      {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
       , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
      
      The usable rules for this path are the following:
      {  rev(nil()) -> nil()
       , rev(unit(x)) -> unit(x)
       , rev(++(x, y)) -> ++(rev(y), rev(x))
       , rev(rev(x)) -> x
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(++(x, y)) -> ++(rev(y), rev(x))
               , rev(rev(x)) -> x
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
               , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(rev(x)) -> x}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [1]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [1]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
            and weakly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [3]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [8]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
             , rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [1]
                  unit(x1) = [1] x1 + [6]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [1]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [8]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [1] x1 + [8]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  rev(++(x, y)) -> ++(rev(y), rev(x))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))
                 , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
              Weak Rules:
                {  ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                 , rev(nil()) -> nil()
                 , rev(unit(x)) -> unit(x)
                 , rev(rev(x)) -> x}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  rev(++(x, y)) -> ++(rev(y), rev(x))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))
                   , ++^#(++(x, y), z) -> c_11(++^#(x, ++(y, z)))}
                Weak Rules:
                  {  ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                   , rev(nil()) -> nil()
                   , rev(unit(x)) -> unit(x)
                   , rev(rev(x)) -> x}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , rev^#_0(2) -> 13
                 , rev^#_0(3) -> 13}
      
   18)
      {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
      
      The usable rules for this path are the following:
      {  rev(nil()) -> nil()
       , rev(unit(x)) -> unit(x)
       , rev(++(x, y)) -> ++(rev(y), rev(x))
       , rev(rev(x)) -> x
       , ++(x, nil()) -> x
       , ++(nil(), y) -> y
       , ++(++(x, y), z) -> ++(x, ++(y, z))}
      
        We have applied the subprocessor on the union of usable rules and weak (innermost) dependency pairs.
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost runtime-complexity with respect to
            Rules:
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(++(x, y)) -> ++(rev(y), rev(x))
               , rev(rev(x)) -> x
               , ++(x, nil()) -> x
               , ++(nil(), y) -> y
               , ++(++(x, y), z) -> ++(x, ++(y, z))
               , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  rev(nil()) -> nil()
               , rev(unit(x)) -> unit(x)
               , rev(rev(x)) -> x}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [1]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
            and weakly orienting the rules
            {  rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [3]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [1]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {  ++(x, nil()) -> x
             , ++(nil(), y) -> y}
            and weakly orienting the rules
            {  rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
             , rev(nil()) -> nil()
             , rev(unit(x)) -> unit(x)
             , rev(rev(x)) -> x}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {  ++(x, nil()) -> x
               , ++(nil(), y) -> y}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [8]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [1] x1 + [1] x2 + [0]
                  rev(x1) = [1] x1 + [1]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [1] x1 + [1] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [9]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [1] x1 + [1]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'fastest of 'combine', 'Bounds with default enrichment', 'Bounds with default enrichment''
            ------------------------------------------------------------------------------------------
            Answer:           YES(?,O(n^1))
            Input Problem:    innermost relative runtime-complexity with respect to
              Strict Rules:
                {  rev(++(x, y)) -> ++(rev(y), rev(x))
                 , ++(++(x, y), z) -> ++(x, ++(y, z))}
              Weak Rules:
                {  ++(x, nil()) -> x
                 , ++(nil(), y) -> y
                 , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                 , rev(nil()) -> nil()
                 , rev(unit(x)) -> unit(x)
                 , rev(rev(x)) -> x}
            
            Details:         
              The problem was solved by processor 'Bounds with default enrichment':
              'Bounds with default enrichment'
              --------------------------------
              Answer:           YES(?,O(n^1))
              Input Problem:    innermost relative runtime-complexity with respect to
                Strict Rules:
                  {  rev(++(x, y)) -> ++(rev(y), rev(x))
                   , ++(++(x, y), z) -> ++(x, ++(y, z))}
                Weak Rules:
                  {  ++(x, nil()) -> x
                   , ++(nil(), y) -> y
                   , rev^#(++(x, y)) -> c_7(++^#(rev(y), rev(x)))
                   , rev(nil()) -> nil()
                   , rev(unit(x)) -> unit(x)
                   , rev(rev(x)) -> x}
              
              Details:         
                The problem is Match-bounded by 0.
                The enriched problem is compatible with the following automaton:
                {  nil_0() -> 2
                 , unit_0(2) -> 3
                 , unit_0(3) -> 3
                 , ++^#_0(2, 2) -> 10
                 , ++^#_0(2, 3) -> 10
                 , ++^#_0(3, 2) -> 10
                 , ++^#_0(3, 3) -> 10
                 , rev^#_0(2) -> 13
                 , rev^#_0(3) -> 13}
      
   19)
      {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
      
      The usable rules for this path are empty.
      
        We have oriented the usable rules with the following strongly linear interpretation:
          Interpretation Functions:
           flatten(x1) = [0] x1 + [0]
           nil() = [0]
           unit(x1) = [0] x1 + [0]
           ++(x1, x2) = [0] x1 + [0] x2 + [0]
           rev(x1) = [0] x1 + [0]
           flatten^#(x1) = [0] x1 + [0]
           c_0() = [0]
           c_1(x1) = [0] x1 + [0]
           c_2(x1) = [0] x1 + [0]
           ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
           c_3(x1) = [0] x1 + [0]
           c_4(x1) = [0] x1 + [0]
           rev^#(x1) = [0] x1 + [0]
           c_5() = [0]
           c_6() = [0]
           c_7(x1) = [0] x1 + [0]
           c_8() = [0]
           c_9() = [0]
           c_10() = [0]
           c_11(x1) = [0] x1 + [0]
        
        We have applied the subprocessor on the resulting DP-problem:
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost DP runtime-complexity with respect to
            Strict Rules:
              {  flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            Weak Rules: {}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [8]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [0] x1 + [0] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(unit(x)) -> c_1(flatten^#(x))}
            and weakly orienting the rules
            {flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(unit(x)) -> c_1(flatten^#(x))}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [8]
                  nil() = [0]
                  unit(x1) = [1] x1 + [8]
                  ++(x1, x2) = [0] x1 + [0] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [3]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [1]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'Empty TRS'
            -----------
            Answer:           YES(?,O(1))
            Input Problem:    innermost DP runtime-complexity with respect to
              Strict Rules: {}
              Weak Rules:
                {  flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The given problem does not contain any strict rules
      
   20)
      {  flatten^#(unit(x)) -> c_1(flatten^#(x))
       , flatten^#(flatten(x)) -> c_4(flatten^#(x))
       , flatten^#(nil()) -> c_0()}
      
      The usable rules for this path are empty.
      
        We have oriented the usable rules with the following strongly linear interpretation:
          Interpretation Functions:
           flatten(x1) = [0] x1 + [0]
           nil() = [0]
           unit(x1) = [0] x1 + [0]
           ++(x1, x2) = [0] x1 + [0] x2 + [0]
           rev(x1) = [0] x1 + [0]
           flatten^#(x1) = [0] x1 + [0]
           c_0() = [0]
           c_1(x1) = [0] x1 + [0]
           c_2(x1) = [0] x1 + [0]
           ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
           c_3(x1) = [0] x1 + [0]
           c_4(x1) = [0] x1 + [0]
           rev^#(x1) = [0] x1 + [0]
           c_5() = [0]
           c_6() = [0]
           c_7(x1) = [0] x1 + [0]
           c_8() = [0]
           c_9() = [0]
           c_10() = [0]
           c_11(x1) = [0] x1 + [0]
        
        We have applied the subprocessor on the resulting DP-problem:
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost DP runtime-complexity with respect to
            Strict Rules: {flatten^#(nil()) -> c_0()}
            Weak Rules:
              {  flatten^#(unit(x)) -> c_1(flatten^#(x))
               , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {flatten^#(nil()) -> c_0()}
            and weakly orienting the rules
            {  flatten^#(unit(x)) -> c_1(flatten^#(x))
             , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {flatten^#(nil()) -> c_0()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [1] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [0] x1 + [0] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [1] x1 + [1]
                  c_0() = [0]
                  c_1(x1) = [1] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [1] x1 + [0]
                  rev^#(x1) = [0] x1 + [0]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'Empty TRS'
            -----------
            Answer:           YES(?,O(1))
            Input Problem:    innermost DP runtime-complexity with respect to
              Strict Rules: {}
              Weak Rules:
                {  flatten^#(nil()) -> c_0()
                 , flatten^#(unit(x)) -> c_1(flatten^#(x))
                 , flatten^#(flatten(x)) -> c_4(flatten^#(x))}
            
            Details:         
              The given problem does not contain any strict rules
      
   21)
      {rev^#(rev(x)) -> c_8()}
      
      The usable rules for this path are empty.
      
        We have oriented the usable rules with the following strongly linear interpretation:
          Interpretation Functions:
           flatten(x1) = [0] x1 + [0]
           nil() = [0]
           unit(x1) = [0] x1 + [0]
           ++(x1, x2) = [0] x1 + [0] x2 + [0]
           rev(x1) = [0] x1 + [0]
           flatten^#(x1) = [0] x1 + [0]
           c_0() = [0]
           c_1(x1) = [0] x1 + [0]
           c_2(x1) = [0] x1 + [0]
           ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
           c_3(x1) = [0] x1 + [0]
           c_4(x1) = [0] x1 + [0]
           rev^#(x1) = [0] x1 + [0]
           c_5() = [0]
           c_6() = [0]
           c_7(x1) = [0] x1 + [0]
           c_8() = [0]
           c_9() = [0]
           c_10() = [0]
           c_11(x1) = [0] x1 + [0]
        
        We have applied the subprocessor on the resulting DP-problem:
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost DP runtime-complexity with respect to
            Strict Rules: {rev^#(rev(x)) -> c_8()}
            Weak Rules: {}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(rev(x)) -> c_8()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(rev(x)) -> c_8()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [0] x1 + [0]
                  ++(x1, x2) = [0] x1 + [0] x2 + [0]
                  rev(x1) = [1] x1 + [0]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'Empty TRS'
            -----------
            Answer:           YES(?,O(1))
            Input Problem:    innermost DP runtime-complexity with respect to
              Strict Rules: {}
              Weak Rules: {rev^#(rev(x)) -> c_8()}
            
            Details:         
              The given problem does not contain any strict rules
      
   22)
      {rev^#(unit(x)) -> c_6()}
      
      The usable rules for this path are empty.
      
        We have oriented the usable rules with the following strongly linear interpretation:
          Interpretation Functions:
           flatten(x1) = [0] x1 + [0]
           nil() = [0]
           unit(x1) = [0] x1 + [0]
           ++(x1, x2) = [0] x1 + [0] x2 + [0]
           rev(x1) = [0] x1 + [0]
           flatten^#(x1) = [0] x1 + [0]
           c_0() = [0]
           c_1(x1) = [0] x1 + [0]
           c_2(x1) = [0] x1 + [0]
           ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
           c_3(x1) = [0] x1 + [0]
           c_4(x1) = [0] x1 + [0]
           rev^#(x1) = [0] x1 + [0]
           c_5() = [0]
           c_6() = [0]
           c_7(x1) = [0] x1 + [0]
           c_8() = [0]
           c_9() = [0]
           c_10() = [0]
           c_11(x1) = [0] x1 + [0]
        
        We have applied the subprocessor on the resulting DP-problem:
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost DP runtime-complexity with respect to
            Strict Rules: {rev^#(unit(x)) -> c_6()}
            Weak Rules: {}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(unit(x)) -> c_6()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(unit(x)) -> c_6()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [1] x1 + [0]
                  ++(x1, x2) = [0] x1 + [0] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'Empty TRS'
            -----------
            Answer:           YES(?,O(1))
            Input Problem:    innermost DP runtime-complexity with respect to
              Strict Rules: {}
              Weak Rules: {rev^#(unit(x)) -> c_6()}
            
            Details:         
              The given problem does not contain any strict rules
      
   23)
      {rev^#(nil()) -> c_5()}
      
      The usable rules for this path are empty.
      
        We have oriented the usable rules with the following strongly linear interpretation:
          Interpretation Functions:
           flatten(x1) = [0] x1 + [0]
           nil() = [0]
           unit(x1) = [0] x1 + [0]
           ++(x1, x2) = [0] x1 + [0] x2 + [0]
           rev(x1) = [0] x1 + [0]
           flatten^#(x1) = [0] x1 + [0]
           c_0() = [0]
           c_1(x1) = [0] x1 + [0]
           c_2(x1) = [0] x1 + [0]
           ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
           c_3(x1) = [0] x1 + [0]
           c_4(x1) = [0] x1 + [0]
           rev^#(x1) = [0] x1 + [0]
           c_5() = [0]
           c_6() = [0]
           c_7(x1) = [0] x1 + [0]
           c_8() = [0]
           c_9() = [0]
           c_10() = [0]
           c_11(x1) = [0] x1 + [0]
        
        We have applied the subprocessor on the resulting DP-problem:
        
          'Weight Gap Principle'
          ----------------------
          Answer:           YES(?,O(n^1))
          Input Problem:    innermost DP runtime-complexity with respect to
            Strict Rules: {rev^#(nil()) -> c_5()}
            Weak Rules: {}
          
          Details:         
            We apply the weight gap principle, strictly orienting the rules
            {rev^#(nil()) -> c_5()}
            and weakly orienting the rules
            {}
            using the following strongly linear interpretation:
              Processor 'Matrix Interpretation' oriented the following rules strictly:
              
              {rev^#(nil()) -> c_5()}
              
              Details:
                 Interpretation Functions:
                  flatten(x1) = [0] x1 + [0]
                  nil() = [0]
                  unit(x1) = [0] x1 + [0]
                  ++(x1, x2) = [0] x1 + [0] x2 + [0]
                  rev(x1) = [0] x1 + [0]
                  flatten^#(x1) = [0] x1 + [0]
                  c_0() = [0]
                  c_1(x1) = [0] x1 + [0]
                  c_2(x1) = [0] x1 + [0]
                  ++^#(x1, x2) = [0] x1 + [0] x2 + [0]
                  c_3(x1) = [0] x1 + [0]
                  c_4(x1) = [0] x1 + [0]
                  rev^#(x1) = [1] x1 + [1]
                  c_5() = [0]
                  c_6() = [0]
                  c_7(x1) = [0] x1 + [0]
                  c_8() = [0]
                  c_9() = [0]
                  c_10() = [0]
                  c_11(x1) = [0] x1 + [0]
              
            Finally we apply the subprocessor
            'Empty TRS'
            -----------
            Answer:           YES(?,O(1))
            Input Problem:    innermost DP runtime-complexity with respect to
              Strict Rules: {}
              Weak Rules: {rev^#(nil()) -> c_5()}
            
            Details:         
              The given problem does not contain any strict rules